package com.lld.im.tcp.redis;

import com.lld.im.codec.config.BootstrapConfig;
import com.lld.im.tcp.reciver.UserLoginMessageListener;
import org.redisson.api.RedissonClient;

/**
 * @description: redis管理
 * @author: lld
 * @version: 1.0
 */
public class RedisManager {

    private static RedissonClient redissonClient;

    private static Integer loginModel;

    /**
     * 初始化Redis管理器
     * @param config 启动配置对象，包含Redis相关配置参数
     */
    public static void init(BootstrapConfig config){
        // 从配置中获取登录模式
        loginModel = config.getLim().getLoginModel();

        // 创建单机模式客户端策略
        SingleClientStrategy singleClientStrategy = new SingleClientStrategy();

        // 根据配置初始化Redisson客户端
        redissonClient = singleClientStrategy.getRedissonClient(config.getLim().getRedis());

        // 创建用户登录消息监听器
        UserLoginMessageListener userLoginMessageListener = new UserLoginMessageListener(loginModel);

        // 启动用户登录状态监听
        userLoginMessageListener.listenerUserLogin();
    }

    public static RedissonClient getRedissonClient(){
        return redissonClient;
    }

}
